package com.it.bannner.database

import android.app.Application
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.it.bannner.common.DownRecor
import com.it.bannner.dao.DownDao

/**
 * 创建数据库，并根据实体类创建表
 */
@Database(entities = arrayOf(DownRecor::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun getDao(): DownDao
    /**
     * object关键字通过对象声明来实现Java 中的单实例模式，与普通类不同，对象声明在定义的时候就被创建，
     * 无需构造方法。Kotlin中的对象声明被编译成了通过静态字段持有它的单实例的类。
     */
    object AppDataBaseSingleClass {
        /**
         * 以单实例的形式初始化数据 并对外提供  AppDataBase实例
         * @param context
         * @return
         */
        open fun getInstance(application: Application): AppDatabase? {
            val db = Room.databaseBuilder(
                application.applicationContext,
                AppDatabase::class.java, "decor-info"
            ).build()
            return db

        }
    }

}
